网络层 Network Layer

主要任务

  • 数据链路层完成了在一个网络中如何将帧从一个节点传输到另一个节点。而网络层用于将数据 从一个网络发送到另一个网络 的过程。
  • 在网络层中,会引入路由(Router)和网关(Gateway)等中间设备。
  • 除了将异构网络互联、通过路由和转发实现任意网络结点间的数据传输以外,网络层还关注拥塞控制 (congestion control) 和服务质量 (quality of service) 等话题。
  • 在异构网络中传输,通过更换帧的 wrapper 以更改其数据链路层传输协议。
  • 不同的网络对数据长度限制也不同,有几率产生包碎片(Packet Fragmentation),解决方法有:
    • Transparent fragmentation:在传输到 下一个网络 时,对碎片进行组合,再拆分以在当前网络中传播
    • Nontransparent fragmentation:组合碎片的工作将被交给最终的 接收方
    • Path MTU discovery:探测路径中允许的最大包限制,在 发送方 进行拆分

提供给传输层的服务

无连接服务:数据报网络 datagram network

面向连接服务:虚电路网络 virtual-circuit network

Issue Datagram network virtual-circuit network
Circuit setup Not needed Required
Addressing Each packet contains the full source and destination address each packet contains a short VC number
State information Routers do not hold state information about connections Each VC requires router table space per connection
Routing Each packet is routed independently Route chosen when VC is set up; all packets follow it
Effect of router failures None, except for packets lost during the crash All VCs that passed through the failed router are terminated
Quality of service Difficult Easy if enough resoureces can be allocated in advance for each VC
Congestion control Difficult Easy if enough resources can be allocated in advance for each VC
单播与组播

  • 单播:一般情况下讨论的数据报传递
  • 组播:让源计算机一次发送的单个分组可以抵达用一个组地址标志的若干目标主机
    • 应用于 UDP
    • 使用 组播转发树 避免 路由环路

路由算法

Flooding

Distance Vector Routing / Bellman-ford Routing

Hierarchical Routing

路由协议

路由协议

在实际情况中,出于安全性等因素的考量,为隐藏网络内部细节、支持不同的特性,路由也被分成组间路由和组内路由,其中组内路由协议有 RIPOSPF,组间路由协议有 BGP

RIP

OSPF

BGP

因特网协议 IP

IPv4

IPv4 协议包含 Header(20-byte fixed)+ Body / Payload

IPv4 地址

Internet 上的每一个 host 和 router 都有 IP 地址,但是 IP 地址指向的并不一定是一个单一机器,而是一个 network interface
IP 地址经过划分,可以分成 Network 部分和 Host 部分,Network 对应着一个网络,而 Host 表示该网络中的节点

  • 优点:路由表较小
  • 缺点:可能造成一定的浪费

为节约 IP 地址,对其进行不同的划分

  • 特殊网段
    • 本网络上的本主机:0.0.0.0
    • 本网络的广播地址:255.255.255.255
    • 自环:127.0.0.0 - 127.255.255.255
    • 主机号全为 0:本网络本身
    • 主机号全为 1:本网络广播地址
  • 私有网段
    • A 类私有网段:10.0.0.0 - 10.255.255.255
    • B 类私有网段:172.16.0.0.0 - 172.31.255.255
    • C 类私有网段:192.168.0.0 - 192.168.255.255
Subnetwork

  • 子网掩码(subnet mask)
    • 用于指明一个 IP 地址,哪些标识的是网络地址(Network address),哪些标志的是主机地址(Host address)
    • E.g. 255.128.0.0、FF.80.00.00、/16(表示前 16 位被用于表示网络地址)
  • 子网(Subnetwork)
    • 划分子网允许将单一的站点划分成多个局域网
    • 如下面的网络,我们可以将部分主机地址划给网络地址,这样就可以实现内部的子网划分

CIDR

CIDR(Classless Inter-Domain Routing),取代了传统的基于 A、B、C 类的旧 IPv4 系统,提高了 IPv4 的可延展性。CIDR 基于变长子网掩码(VLSM),使得网络地址可以为任意长度,进一步减少了 IP 地址的浪费。

NAT

NAT(Network Address Translation)是一种用于解决 IP 地址过少问题的技术,本质算法就是将 私有 IP 地址 和唯一的 公网 IP 上的诸多 端口 建立映射,实现网络层通信。

  • NAT 的表项需要管理员手动添加
  • NAT 也存在诸多弊端
    1. NAT 违反了 IP 的模型规定:每个 IP 地址表示一个单独的机器
    2. NAT 打破了 Internet 的端到端模型:接收方无法准确标识发送方主机
    3. NAT 打破了分层模型的隔离性
    4. ...

IPv6

Internet Control Protocols

sequenceDiagram
	participant A as PC
	participant B as Target
	A->>B: who has *.*.*.* ?(广播)
	B->>A: (单播)
sequenceDiagram
	participant C as PC
	participant D as DHCP-Server
	C ->> D: 寻找DHCP服务器(广播,0.0.0.0 -> FF.FF.FF.FF)
	D ->> C: 回复许可(广播,DHCP地址 -> FF.FF.FF.FF)
	C ->> D: 确认获取IP(广播,0.0.0.0 -> FF.FF.FF.FF)
	D ->> C: DHCP确认(广播,DHCP地址 -> FF.FF.FF.FF)

Mobile Internet Protocol